﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace BankingService
{
    /// <summary>
    /// Summary description for ServiceForLeagueBank
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class ServiceForLeagueBank : System.Web.Services.WebService
    {
        private DongABankDataContext context = new DongABankDataContext();

        //-------------------------------CHUYỂN KHOẢN LIÊN NGÂN HÀNG---------------------------------------
        [WebMethod]
        public String Authenticate(String MaGiaoDich, String password)
        {
            return new LeagueBankAuthentication().Authenticate(MaGiaoDich, password);
        }

        [WebMethod]
        public int Transfer(String sid, int TransferType, String BankId, String LBankId, float AmountMoney, String Currency)
        {
            //Kiểm tra SID còn dùng được hay không?
            if (!MyUtility.KiemTraSIDNganHang(sid))
                return 3;

            //Tài khoản (BankId) thuộc DAB không tồn tại, hoặc tài LBankId không thuộc liên minh
            if (!MyUtility.CoTaiKhoanNganHang(BankId) || !MyUtility.ThuocLienMinhNganHang(MyUtility.LayMaGiaoDichCuaNganHang(LBankId)))
                return 1;

            var all = from row in context.TaiKhoanNganHangs where row.MaTaiKhoan.Equals(BankId) select row;

            switch (TransferType)
            {
                case 0:
                    foreach (TaiKhoanNganHang i in all)
                        i.SoDu += (decimal)AmountMoney;
                    break;
                case 1:
                    foreach (TaiKhoanNganHang i in all)
                    {
                        if (i.SoDu < (decimal)AmountMoney)
                            return 2;

                        i.SoDu -= (decimal)AmountMoney;
                    }
                    break;
                default:
                    break;
            }
            try
            {
                context.SubmitChanges();
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return 3;
            }

            MyUtility.HuySIDNganHang(sid);

            //Lưu lịch sử giao dịch
            return 0;
        }
    }
}
